﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Application.Behavior.Strategy
{
	class Program
	{
		static void Main_(string[] args)
		{
			Voiture oVoiture	= new Voiture();
			oVoiture.Afficher();

			oVoiture.Rouler(); // Je roule en électricité
			// Je change de moteur
			oVoiture.oConduite	= new ConduiteEnElectricite();
			oVoiture.Rouler(); // Je roule en électricté
			Console.ReadLine();
		}
	}

    public class Voiture
    {
		// ATTRIBUT
        public string strType;
        public string strMarque;

		public IConduite oConduite;
		public IAvertissement oAvertir;

		// CONSTRUCTEUR
		public Voiture()
		{
			strType		= "Hybride";
			strMarque	= "206";

			oConduite	= new ConduiteEnEssence();
			oAvertir	= new Avertissement();
		}

		// METHODE
        public void Rouler()
        {
			oConduite.Rouler();
        }

		public void Afficher()
		{
			Console.WriteLine(String.Format("Je suis une voiture de type {0} et de marque {1}", strType, strMarque));
		}
    }
}
